//
// Created by 原帅 on 2022/10/3.
//

#ifndef R_RINITPROCIF_H
#define R_RINITPROCIF_H

class RInitRegisterIF;

class RInitProcIF {
public:

    RInitProcIF();

    RInitProcIF(RInitRegisterIF& rInitRegisterIf);

     /**
      * 用来定义程序初始化的执行功能， 用户必须定义重新此函数，如果处理中返回了失败错误码，会传入fail函数中进行处理
      * @param argc
      * @param argv
      * @return 返回值为非0时，会进入fail()函数进行进一步处理，并将返回值作为参数传入fail()
      */
    virtual int initProcess(int argc, char** argv)=0;

    /**
     * initProcess 返回值非0时，执行此函数。用户可以重新定义此函数，处理process的错误
     * @param iProcFailRet 传入的是process 的返回值
     * @return 返回非0时，程序将终止执行
     */
    virtual int initFail(int iProcFailRet);

    virtual int registerInitProc(RInitRegisterIF& rInitRegisterIf);

};


#endif //R_RINITPROCIF_H
